package com.cnhis.drgs.core.dao;

import java.util.List;
import java.util.Map;

public interface Dao {

    /**
     * 查询对象列表
     *
     * @param sql
     * @param clazz
     * @param params
     * @param <T>
     * @return
     */
    <T> List<T> queryList(String sql, Class<T> clazz, Object... params);

    /**
     * 查询Map列表
     *
     * @param sql
     * @param params
     * @return
     */
    List<Map<String, Object>> queryListMap(String sql, Object... params);

    /**
     * 查询对象
     *
     * @param sql
     * @param clazz
     * @param params
     * @param <T>
     * @return
     */
    <T> T queryFirst(String sql, Class<T> clazz, Object... params);

    /**
     * 查询Map
     *
     * @param sql
     * @param params
     * @return
     */
    Map<String, Object> queryFirstMap(String sql, Object... params);

    /**
     * 查询记录行数
     *
     * @param sql
     * @param params
     * @return
     */
    int getCount(String sql, Object... params);

    /**
     * 插入
     *
     * @param sql
     * @param params
     * @return 如果自增长，返回当前插入的自增长id值
     */
    int insert(String sql, Object... params);

    /**
     * 更新
     *
     * @param sql
     * @param params
     * @return
     */
    int update(String sql, Object... params);

    /**
     * 批量更新
     *
     * @param sql
     * @param params
     * @return
     */
    int[] batch(String sql, Object[][] params);
}
